####################################################################################################
### Title: People Consistently View Elections and Civil Liberties as Key Components of Democracy ###
### Content: Cleaning the Italian dataset                                                        ###
### Date: August 24, 2024                                                                        ###
####################################################################################################

### Set-up ----
## Clean the working environment and set the working directory
rm(list = ls())
setwd("~/Desktop/Science_Replication/data_cleaning")

## Install the cjdata package (if not yet installed)
# library(devtools)  # version 2.4.3
# install_github(repo = "yhoriuchi/cjdata")

## Load the required packages
library(tidyverse) # version 2.0.0
library(cjdata)    # version 0.1.0

## Read the raw dataset
df <- read_Qualtrics("raw_IT.csv")

### Data cleaning ----
## Recode variables of respondent characteristics
# Minority status (1 = minority; 0 = otherwise)
df <- df %>% mutate(minority_bin = case_when(
  minority == "Sì" ~ 1,
  minority == "No" | minority == "Non so" ~ 0
))
df$minority_bin <- factor(df$minority_bin, 0:1, c("Non-Minority", "Minority"))
table(df$minority_bin)

# Gender (1 = female; 0 = male)
df <- df %>% rename(gender5 = gender)
df <- df %>% mutate(gender_bin = case_when(
  gender5 == "Femmina" ~ 1,
  gender5 == "Maschio" ~ 0
))
df$gender_bin <- factor(df$gender_bin, 0:1, c("Male", "Female"))
table(df$gender_bin)

# Self-reported political ideology (1 = right; 0 = left)
df <- df %>% mutate(ideo_bin = case_when(
  political == "Fortemente di sinistra" |
    political == "Moderatamente di sinistra" |
    political == "Leggermente di sinistra" ~ 0,
  political == "Fortemente di destra" |
    political == "Moderatamente di destra" |
    political == "Leggermente di destra" ~ 1
))
df$ideo_bin <- factor(df$ideo_bin, 0:1, c("Left", "Right"))
table(df$ideo_bin)

# Education (1 = college; 0 = no college)
df <- df %>% mutate(edu_bin = case_when(
  edu == "Inferiore al diploma superiore" |
    edu == "Diploma superiore o equivalente" |
    edu == "Diploma universitario" |
    edu == "Studi universitari, senza conseguire alcuna laurea" ~ 0,
  edu == "Laurea Triennale" |
    edu == "Laurea Specialistica/Master/Dottorato di Ricerca (MA, MS, MBA, PhD, JD, MD, etc.)" ~ 1
))
df$edu_bin <- factor(df$edu_bin, 0:1, c("No College", "College"))
table(df$edu_bin)

# Geopolitical alignment (1 = pro-China; 0 = pro-US)
df <- df %>% mutate(pro_china = case_when(
  china_us1 == "Preferirei probabilmente gli Stati Uniti" |
    china_us1 == "Preferirei sicuramente gli Stati Uniti" ~ 0,
  china_us1 == "Preferirei probabilmente la Cina" |
    china_us1 == "Preferirei sicuramente la Cina" ~ 1
))
df$pro_china <- factor(df$pro_china, 0:1 , c("Pro-US", "Pro-China"))
table(df$pro_china)

## Subset and reshape dataset into wide format that each row is a distinct conjoint task
df$Q1.1 <- ifelse(df$Q1.1 == "Paese A", "Country A", "Country B")
df$Q1.5 <- ifelse(df$Q1.5 == "Paese A", "Country A", "Country B")
df$Q1.9 <- ifelse(df$Q1.9 == "Paese A", "Country A", "Country B")
df_cj <- cjdata::reshape_conjoint(df, ResponseId, paste0("Q1.", seq(from = 1, to = 9, by = 4)))

## Rename the variables
df_cj <- df_cj %>% 
  rename(econ = "Le situazioni economiche dei ricchi e dei poveri sono...",
         populist = "Nella definizione delle politiche, i politici...",
         direct = "Il popolo vota direttamente le decisioni politiche...",
         civil = "Le libertà individuali dei cittadini, come la libertà di parola, di religione e di associazione, sono...",
         gender = "I diritti degli uomini e delle donne sono...",
         expert = "Gli esperti indipendenti e non eletti...",
         obedient = "Quando i cittadini non sono d'accordo con le politiche del loro governo...",
         election = "Le elezioni per la leadership politica in questo paese...",
         leader = "Nel prendere decisioni, il leader del paese...")

## Reorder the factors
# Electoral democracy
df_cj$election <- 
  factor(df_cj$election, 
         levels = c("Non si svolgono o sono inesistenti", "Vengono influenzate in favore del gruppo politico che attualmente detiene il potere", "Si disputano liberamente ed equamente tra vari gruppi politici"), 
         labels = c("Elections are not held", "Elections are biased", "Elections are free and fair"))

# Liberal democracy
df_cj$civil <- 
  factor(df_cj$civil, 
         levels = c("Per nulla protette dalla legge", "Debolmente protette dalla legge", "Fortemente protette dalla legge"), 
         labels = c("Civil liberties are not at all protected", "Civil liberties are weakly protected", "Civil liberties are strongly protected"))

# Institutional democracy
df_cj$leader <- 
  factor(df_cj$leader, 
         levels = c("Può quasi sempre scavalcare l'autorità del legislatore e dei tribunali", "Può a volte scavalcare l'autorità del legislatore e dei tribunali", "Deve rispettare l'autorità del legislatore e dei tribunali"), 
         labels = c("Leader is weakly constrained", "Leader is somewhat constrained", "Leader is highly constrained"))

# Populist democracy
df_cj$populist <- 
  factor(df_cj$populist, 
         levels = c("Raramente rispettano ciò che vuole la maggioranza", "A volte rispettano ciò che vuole la maggioranza", "Rispettano spesso ciò che vuole la maggioranza"), 
         labels = c("Leader rarely follows the majority", "Leader sometimes follows the majority", "Leader frequently follows the majority"))

# Loyalist democracy
df_cj$obedient <- 
  factor(df_cj$obedient, 
         levels = c("La maggior parte obbedisce al governo", "Alcuni obbediscono e alcuni contestano il governo", "La maggior parte contesta il governo"), 
         labels = c("Dissidents mostly obey the gov't", "Dissidents occasionally obey the gov't", "Dissidents mostly challenge the gov't"))

# Substantive democracy (economy)
df_cj$econ <- 
  factor(df_cj$econ, 
         levels = c("Altamente disuguali", "Abbastanza disuguali", "Uguali"), 
         labels = c("Economic equality is very low", "Economic equality is somewhat low", "Economic equality is high"))

# Substantive democracy (gender)
df_cj$gender <- 
  factor(df_cj$gender, 
         levels = c("Altamente disuguali", "Abbastanza disuguali", "Uguali"), 
         labels = c("Gender equality is very low", "Gender equality is somewhat low", "Gender equality is high"))

# Technocratic democracy
df_cj$expert <- 
  factor(df_cj$expert, 
         levels = c("Non hanno molta influenza sulla politica", "Hanno un po’ di influenza sulla politica", "Hanno una grande influenza sulla politica"), 
         labels = c("Experts have small influence on policy", "Experts have some influence on policy", "Experts have much influence on policy"))

# Direct democracy
df_cj$direct <- 
  factor(df_cj$direct, 
         levels = c("Raramente", "A volte", "Spesso"),
         labels = c("Policies are rarely voted on", "Policies are sometimes voted on", "Policies are frequently voted on"))

## Incorporate respondent IDs and other covariates
df <- df %>% rename(id = ResponseId)
df_cj <- merge(df_cj, df, by = "id")

## Indicate the country
df_cj$country <- "IT"

## Export the dataset
write.csv(df_cj, "df_IT.csv", row.names = FALSE)
